package com.sg.dto.integration.component;

import com.sg.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.Objects;

/**
 * @desc MessageNumDto
 * @使用场景
 */
@Data
public class MessageNumDto extends BaseDto implements Serializable {

    /**
     * 消息数量ID
     */
    @ApiModelProperty("消息数量ID")
    private String messageLocationRemindId;

    /**
     * 消息数
     */
    @ApiModelProperty("消息数")
    private Long messageNum;

    /**
     * 归属内容ID
     */
    @ApiModelProperty("归属内容ID")
    private String entityId;

    /**
     * 消息位置标识
     */
    @ApiModelProperty("消息位置标识")
    private String messageLocationTypeCode;

    /**
     * 消息提示类型 RED_POINT_TYPE:红点型 NUMBER_TYPE:数量型 MIX_TYPE:混合型
     */
    @ApiModelProperty("消息提示类型")
    private String messagePromptType;

    /**
     * 账号
     */
    @ApiModelProperty("账号")
    private String userId;

    /**
     * 身份人员ID
     */
    @ApiModelProperty("身份人员ID")
    private String originalRoleMemberId;

    /**
     * 扩展内容ID
     */
    @ApiModelProperty("扩展内容ID")
    private String extendedContentId;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        if (!super.equals(o)) return false;
        MessageNumDto that = (MessageNumDto) o;
        return (
                messageLocationRemindId == that.messageLocationRemindId &&
                        messageNum == that.messageNum &&
                        entityId == that.entityId &&
                        messageLocationTypeCode == that.messageLocationTypeCode &&
                        messagePromptType == that.messagePromptType &&
                        userId == that.userId &&
                        originalRoleMemberId == that.originalRoleMemberId &&
                        extendedContentId == that.extendedContentId
        );
    }

    @Override
    public int hashCode() {
        return Objects.hash(
                super.hashCode(),
                messageLocationRemindId,
                messageNum,
                entityId,
                messageLocationTypeCode,
                messagePromptType,
                userId,
                originalRoleMemberId,
                extendedContentId
        );
    }

}
